import os
import shutil


# 一、创建文件夹
def create_dir(srcDir, dstDir):
	"""
	在进行文件夹复制之前，需要确保目标文件夹是存在的，可以使用 Python 的 os 模块中的 mkdir() 函数来创建目标文件夹
	
	如果目标文件夹不存在，则会创建目标文件夹。
	:param srcDir:
	:param dstDir:目标文件夹
	:return:
	"""
	if not os.path.exists(dstDir):
		os.mkdir(dstDir)


# 二、复制文件夹
def copyDir(srcDir, dstDir):
	"""
	Python中可以使用shutil模块的rmtree()和copytree()函数实现对文件夹的删除和复制。
	
	使用copytree()函数将srcDir目录复制到dstDir目录中。
	"""
	if not os.path.exists(dstDir):
		os.mkdir(dstDir)
	shutil.copytree(srcDir, dstDir)


# 三、复制文件
def copyFiles(srcDir, dstDir):
	"""
	如果只需要复制文件夹中的文件，可以使用shutil模块的copy()函数复制。
	
	该代码将srcDir目录中的所有文件复制到dstDir目录中
	"""
	if not os.path.exists(dstDir):
		os.mkdir(dstDir)
	for file in os.listdir(srcDir):
		srcFile = os.path.join(srcDir, file)
		dstFile = os.path.join(dstDir, file)
		if os.path.isfile(srcFile):
			shutil.copy(srcFile, dstFile)


# 四、加入异常处理
def copy(srcDir, dstDir):
	"""在使用上述代码进行文件夹复制时，可能会出现文件夹不存在或者文件复制失败的情况，为了避免程序运行中断，可以加入异常处理。
	
	该代码加入异常处理，当出现复制失败时，输出错误信息。
	"""
	try:
		if os.path.isdir(srcDir):
			if not os.path.exists(dstDir):
				os.mkdir(dstDir)
			files = os.listdir(srcDir)
			for f in files:
				srcPath = os.path.join(srcDir, f)
				dstPath = os.path.join(dstDir, f)
				if os.path.isdir(srcPath):
					copy(srcPath, dstPath)
				if os.path.isfile(srcPath):
					shutil.copy(srcPath, dstPath)
		
		if os.path.isfile(srcDir):
			shutil.copy(srcDir, dstDir)
	except:
		print('复制失败')
